widget: Add a debug message for consumed key events
authorMatthias Clasen <mclasen@redhat.com>
Fri, 26 Jun 2020 18:05:57 +0000 (14:05 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 26 Jun 2020 18:08:14 +0000 (14:08 -0400)
Run the application with GTK_DEBUG=keybindings to
get some hints where key events get lost.

gtk/gtkwidget.c

index 897ce139655261adf74335890315bb08b1896ec9..9b936ef6f2a78403ef65608765a77cfbbca86a81 100644 (file)
@@ -4371,6 +4371,22 @@ gtk_widget_run_controllers (GtkWidget           *widget,
               is_gesture = GTK_IS_GESTURE (controller);
               this_handled = gtk_event_controller_handle_event (controller, event, target, x, y);
 
+#ifdef G_ENABLE_DEBUG
+              if (GTK_DEBUG_CHECK (KEYBINDINGS))
+                {
+                  GdkEventType type = gdk_event_get_event_type (event);
+                  if (this_handled &&
+                      (type == GDK_KEY_PRESS || type == GDK_KEY_RELEASE))
+                    {
+                      g_message ("key %s (keyval %d) handled at widget %s by controller %s\n",
+                                 type == GDK_KEY_PRESS ? "press" : "release",
+                                 gdk_key_event_get_keyval (event),
+                                 G_OBJECT_TYPE_NAME (widget),
+                                 gtk_event_controller_get_name (controller));
+                    }
+                }
+#endif
+
               handled |= this_handled;
 
               /* Non-gesture controllers are basically unique entities not meant